package com.example.myframe

import android.content.Context
import androidx.recyclerview.widget.RecyclerView
import com.drake.brv.utils.linear
import com.drake.brv.utils.setup
import com.hjq.permissions.OnPermissionCallback
import com.hjq.permissions.Permission
import com.hjq.permissions.XXPermissions
import com.tencent.mmkv.MMKV


/**
 * 该类用作说明，build.gradle里用api添加第三方库让App模块也可以使用
 * 展示框架第三方库的用法，为了不让篇幅过长，仅展示基础用法，更多请到github上查看。
 * kotlin和Compose 安卓开发的趋势，能学就学吧。
 * kotlin 学习网站https://www.kotlincn.net/
 * */
object 说明 {
    //qmui腾讯ui框架，https://github.com/Tencent/QMUI_Android，正往Compose开发了，用法多，不做演示，下载apk看
    //使用kotlin开发图片加载可以使用Coil，java用Glide
    //hilt 依赖注入，需要学习，故无添加，可自行学习添加
    //java工具类可以添加https://github.com/Blankj/AndroidUtilCode 使用教程https://github.com/Blankj/AndroidUtilCode/blob/master/lib/utilcode/README-CN.md
    //kotlin工具类可以添加https://github.com/DylanCaiCoding/Longan/blob/master/README_CN.md

    //EasyHttp 已经设置模板 直接输入get即可生成 https://github.com/getActivity/EasyHttp
    fun get() {
//        EasyHttp.get(this).api(LoginApi(username, password))
//            .request(object : SimpleCallBack<HttpData<Bean?>?>(this@LoginActivity) {
//                fun succeed(result: HttpData<Bean>) {
//                    if (!result.isSuccess()) {
//                        tip(this@LoginActivity, "账号或密码错误")
//                        return
//                    }
//                    val data: Bean = result.getData()
//                    if (data.getEmployee() != null) {
//                        GlobalApplication.setEmployee(data.getEmployee())
//                        dismiss()
//                        HomeActivity.actionStart(
//                            this@LoginActivity,
//                            Intent.FLAG_ACTIVITY_SINGLE_TOP or Intent.FLAG_ACTIVITY_CLEAR_TOP,
//                            data.getEmployee()
//                        )
//                        finish()
//                    }
//                }
//            })
    }

    /*
    *  XXPermissions权限申请， github地址https://github.com/getActivity/XXPermissions
    * */
    fun requestPermissions(context: Context) {
        XXPermissions.with(context) // 申请单个权限
            .permission(Permission.WRITE_EXTERNAL_STORAGE)
            // 申请多个权限
            .permission(Permission.Group.CALENDAR)
            // 设置权限请求拦截器（局部设置）
            //.interceptor(new PermissionInterceptor())
            // 设置不触发错误检测机制（局部设置）
            //.unchecked()
            .request(object : OnPermissionCallback {
                override fun onGranted(permissions: List<String>, all: Boolean) {
                    //同意时的操作
                }

                override fun onDenied(permissions: List<String>, never: Boolean) {
                    //不同意时的操作
                    if (never) {//永久
                        // 如果是被永久拒绝就跳转到应用权限系统设置页面
                        XXPermissions.startPermissionActivity(context, permissions)
                    } else {
//                        ToastUtil.toast("拒绝会导致功能无法正常使用")
                    }
                }
            })
    }

    /*
    * mmkv性能强劲，https://github.com/Tencent/MMKV/blob/master/README_CN.md
    * */
    fun mmkvInit() {
        //MMKV 的使用非常简单，所有变更立马生效，无需调用 sync、apply。 在 App 启动时初始化 MMKV，设定 MMKV 的根目录（files/mmkv/），例如在 Application 里：
//        String rootDir = MMKV.initialize(this);
//            System.out.println("mmkv root: " + rootDir);
        //MMKV 提供一个全局的实例，可以直接使用：
        val kv = MMKV.defaultMMKV()
        kv.encode("string", "Hello from mmkv")//存
        val str: String? = kv.decodeString("string", "")//读
        print(str)
    }

    /*
    *BRV一个好用的Rv适配器，用于kotlin开发，https://github.com/liangjingkanji/BRV，https://liangjingkanji.github.io/BRV/。
    * java用BaseRecyclerViewAdapterHelper，https://github.com/CymChad/BaseRecyclerViewAdapterHelper/blob/master/readme/0-BaseRecyclerViewAdapterHelper.md
    * */
    inline fun <reified T> setRv(rv: RecyclerView, t: List<T>, layoutId: Int) {
        //这样一个简单的dataBinding适配器就做好了
        rv.linear().setup {
            addType<T>(layoutId)
        }.models = t
    }
}